﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BLL.Concrete;

namespace BackOffice.Controllers
{
    [HandleError]
    [Authorize(Roles = "Administrator")]
    [ValidateInput(false)]
    public class CasosController : Controller
    {
        //
        // GET: /Casos/
        CasoBll casoBll;

        public CasosController()
        {
            casoBll = new CasoBll();
        }

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult PartialMenu()
        {
            return PartialView();
        }

        public ActionResult ListCasos()
        {
            var casos = casoBll.GetCasos().ToList();
            ViewData.Model = casos;
            return PartialView();
        }

        public ActionResult Caso(int id)
        {
            var caso = casoBll.GetCasos().Single(u => u.Id == id);
            ViewData.Model = caso;
            if (TempData["mensajeSuccess"] != null)
            {
                ViewData["mensajeSuccess"] = TempData["mensajeSuccess"].ToString();
            }
            return View("CasoEdit");
        }

        public ActionResult NuevoCaso()
        {
            ViewData.Model = null;
            return View("CasoEdit");
        }

        public ActionResult Rotativo(int idCaso)
        {
            var rotativo = casoBll.GetCasosRotativos().Where(u => u.IdCaso == idCaso).ToList();
            var imagenes = casoBll.GetCasosRotativos().Where(u => u.IdCaso == idCaso).Select(u => u.Image).ToList();

            ViewBag.imagenes = imagenes;
            ViewBag.idCaso = idCaso;
            ViewData.Model = rotativo;
            return View();
        }

        [HttpPost]
        public ActionResult DeleteCaso(int idCaso)
        {
            try
            {
                casoBll.EliminarCaso(idCaso);
                return Json(new { success = true, mensaje = "Caso eliminado con éxito" });
            }
            catch
            {
                return Json(new { success = false, mensaje = "El caso no pudo ser eliminado" });
            }
        }

        [HttpPost]
        public ActionResult InsertCaso(string nombre, string descripcion, HttpPostedFileBase imagenIndice)
        {
            int idCaso = casoBll.InsertCaso(nombre, descripcion, imagenIndice);
            TempData["mensajeSuccess"] = "Caso creada con exito";
            return RedirectToAction("Caso", new { id = idCaso });
        }

        [HttpPost]
        public ActionResult UpdateCaso(int idCaso,string nombre, string descripcion, HttpPostedFileBase imagenIndice)
        {
            casoBll.UpdateCaso(idCaso, nombre, descripcion, imagenIndice);
            return RedirectToAction("Caso", new { id = idCaso });
        }

        [HttpPost]
        public ActionResult InsertImagenGaleria(int idCaso,int orden, HttpPostedFileBase imagen)
        {
            casoBll.InsertImagenRotativo(idCaso, orden, imagen);
            return RedirectToAction("Rotativo", new { idCaso = idCaso });
        }

        [HttpPost]
        public ActionResult DeleteImagenRotativo(int idImagen)
        {
            try
            {
                casoBll.EliminarImagenRotativo(idImagen);
                return Json(new { success = true, mensaje = "Imagen eliminada con éxito" });
            }
            catch
            {
                return Json(new { success = false, mensaje = "La imagen pudo ser eliminado" });
            }
        }

        [HttpPost]
        public ActionResult UpdateOrden(int idImagen,int orden)
        {
            try
            {
                casoBll.UpdateOrden(idImagen,orden);
                return Json(new { success = true, mensaje = "Orden actualizado con exito" });
            }
            catch
            {
                return Json(new { success = false, mensaje = "El orden no pudo ser actualizado" });
            }
        }
    }
}
